package com.neobeai.algorithm.leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author xp
 * @date 2024/12/9 17:23
 * @description
 */
public class Demo4 {

    /**
     * 力扣26题
     * 给你一个 非严格递增排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
     * 元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。     *
     * 考虑 nums 的唯一元素的数量为 k ，你需要做以下事情确保你的题解可以被通过：     *
     * 更改数组 nums ，使 nums 的前 k 个元素包含唯一元素，并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
     * 返回 k 。
     * @param nums  数组
     * @return
     */
    public static int removeDuplicates(int[] nums) {
        // 实现双指针算法实现 TODO
        int left = 0;
        int right = 1;
        while (right < nums.length) {
            if (nums[right] != nums[left]) {
                nums[left + 1] = nums[right];
                left ++;
            }
            right ++;
        }
        return left + 1;
    }

    public static void main(String[] args) {
        int[] nums = {0, 1, 2, 2, 3, 0, 4, 2};
        int result = removeDuplicates(nums);
        System.out.println(Arrays.toString(nums));
        System.out.println(result);
    }

}
